在開發 WinForm 程式時,有一種常見的設計版面是多重視窗(MDI)。
所謂的多重視窗(MDI)就是在原本的視窗內,再開出新的視窗,也稱為子母視窗。
多重視窗是許多視窗程式會採用的版面配置,適合在大型的專案中會使用,例如 Visual Studio 也是使用多重視窗的配置。
以下會示範如何建立基本的多重視窗,以及如何限制視窗只能開啟一次。
在主要表單新增 MenuStrip 或是 ToolStrip。
這兩種工具都適合放在主表單上面,當作開啟子表單的按鈕。
我所放的是 ToolStrip 工具列。
將主要表單的「IsMdiContainer」設為”True”。
將主要視窗設為主要啟動程式。
我的主要視窗名稱為 “FormMaster”。
開啟 Program.cs 修改主要啟動程式。
首先新增一個子視窗,我命名為 “FormAccount”,在主視窗的 MenuStrip 或是 ToolStrip 增加按鈕。
點擊按鈕寫入以下程式碼。
FormAccount childForm = new FormAccount();
childForm.MdiParent = this;
childForm.Show();
測試一下。
因為某些子視窗在畫面中沒有必要重複開啟,而剛剛的程式碼中若重複執行就會重複開啟。
所以我們要加上以下程式碼,在開啟之前檢查一下。
bool isFind = false;
foreach (Form form in this.MdiChildren)
{
if (form.Name == "FormAccount")
{
isFind = true;
form.MdiParent = this;
form.Focus();
}
}
if (isFind == false)
{
FormAccount childForm = new FormAccount();
childForm.MdiParent = this;
childForm.Show();
}
此段程式碼在開啟子視窗之前,會先檢查一遍所有的子視窗名稱是否存在,存在的話就會成為焦點,當不存在的時候才會加入子視窗。
[C# WinForm] 建立第一個應用程式 Hello World
微軟整合開發工具 Visual Studio 2022 安裝教學
如何在 Visual Studio 2019 建立 Windows Forms App 程式安裝檔
官方教學說明
建立 MDI 父表單